#include "stm32f10x.h"                  // Device header
#include <stdio.h>
#include "Delay.h"
#include "Serial.h"
#include "airpump.h"
#include "OLED.h"
#include "AD.h"

uint8_t RxData;			//定义用于接收串口数据的变量
uint16_t ADValue;			//定义AD值变量
float Voltage;				//定义电压变量

int main(void)
{

		/*模块初始化*/
	Serial_Init();		//串口初始化
	airpump_Init();   //初始化气泵
	OLED_Init();		//OLED初始化
	AD_Init();				//AD初始化
	
	
	/*OLED显示*/
	OLED_ShowString(1, 1, "system begin!!!");	
	OLED_ShowString(2, 1, "color:");
	OLED_ShowString(3, 1, "ADValue:");
	OLED_ShowString(4, 1, "Voltage:0.00V");
	while (1)
	{
		ADValue = AD_GetValue();					//获取AD转换的值
		Voltage = (float)ADValue / 4095 * 3.3;		//将AD值线性变换到0~3.3的范围，表示电压
		
		OLED_ShowNum(3, 9, ADValue, 4);				//显示AD值
		OLED_ShowNum(4, 9, Voltage, 1);				//显示电压值的整数部分
		OLED_ShowNum(4, 11, (uint16_t)(Voltage * 100) % 100, 2);	//显示电压值的小数部分
		
		Delay_ms(100);			//延时100ms，手动增加一些转换的间隔时间
		
		if (Serial_GetRxFlag() == 1)			//检查串口接收数据的标志位
		{
			RxData = Serial_GetRxData();		//获取串口接收的数据
			Serial_SendByte(RxData);			//串口将收到的数据回传回去，用于测试
			
			if(RxData=='r')
			{
				OLED_ShowString(2, 7, "  red");
				one_action();
				//Delay_ms(1000); 
				OLED_ShowString(2, 7, "      ");
			}
			else if(RxData=='g')
			{
				OLED_ShowString(2, 7, " green");
				Delay_ms(1000); 
				OLED_ShowString(2, 7, "       ");
			}
			else if(RxData=='b')
			{
				OLED_ShowString(2, 7, " blue");
				Delay_ms(1000);
				OLED_ShowString(2, 7, "       ");
			}
		}
	}
}
